function checkFileSize(file: File, maxSize: number) {
	if (file.size > maxSize * 1024 * 1024) {
		throw new Error('文件大小超过限制')
	}
	return true
}

function transformToBase64(file: File) {
	return new Promise((resolve, reject) => {
		const reader = new FileReader();
		reader.onload = function (e) {
			const base64String = e.target.result
			console.log(base64String)
			resolve(base64String)
		}
		reader.onerror = function (e) {
			reject("文件读取失败")
		}
		reader.readAsDataURL(file)
	})
}

function addQueryParam(key: String, value: String | Number) {
	let str = ''

	if (value !== null && value !== undefined && value !== '') {
		str += `${str ? '&' : ''}${key}=${value}`
	} else {
		str += `${str ? '&' : ''}${key}=`
	}

	return str
}


/**
 * 节点类型
 * @param camera    摄像机数据导出
 * @param guard     围界防区数据导出
 * @param light     灯光数据导出
 * @param broadcast 广播数据导出
 * @param event     事件管理数据导出
 * @param log-account     日志管理-用户登录日志
 * @param log-alarm       日志管理-报警日志
 * @param log-operation   日志管理-系统操作日志
 * @param log-config      日志管理-系统配置日志
 * @param log-performace  日志管理-系统性能日志
 * @param log-fail        日志管理-系统故障日志
 */
export enum exportType {
	camera = 'camera',
	guard = 'guard',
	light = 'light',
	broadcast = 'broadcast',
	event = 'event',
	'log-account' = 'log-account',
	'log-alarm' = 'log-alarm',
	'log-operation' = 'log-operation',
	'log-config' = 'log-config',
	'log-performance' = 'log-performance',
	'log-fail' = 'log-fail',
	'device' = 'device'
}

function exportFile(type: exportType, query: Record<string, string | number> = {}) {
	// console.log('🚀 ~ exportFile ~ type:', type)
	let url = ''
	switch (type) {
		// 摄像机数据导出
		case 'camera':
			url = '/export/camera?'
			break
		// 围界防区数据导出
		case 'guard':
			url = '/export/guard?'
			break
		// 灯光数据导出
		case 'light':
			url = '/export/light?model_id=4&'
			break
		// 广播数据导出
		case 'broadcast':
			url = '/export/light?model_id=12&'
			break
		// 事件管理数据导出
		case 'event':
			url = '/export/event?'
			break
		// 日志管理-用户登录日志
		case 'log-account':
			url = '/export/login?'
			break
		// 日志管理-报警日志
		case 'log-alarm':
			url = '/export/event?'
			break
		// 日志管理-系统操作日志
		case 'log-operation':
			url = '/export/operate?'
			break
		// 日志管理-系统配置日志
		case 'log-config':
			url = '/export/setting?'
			break
		// 日志管理-系统性能日志
		case 'log-performance':
			url = '/export/performance?'
			break
		// 日志管理-系统故障日志
		case 'log-fail':
			url = '/export/fault?'
			break
		case 'device':
			url = '/export/device?'
			break
		default:
			break
	}

	const queryList = []

	Object.keys(query).forEach(key => {
		queryList.push(`${key}=${query[key] ?? ''}`)
	})
	// console.log('🚀 ~ exportFile ~ url:', url + queryList.join('&'))


	window.location.href = url + queryList.join('&')
}

export default function fileUtils() {
	return {
		checkFileSize,
		transformToBase64,
		exportFile
	}
}